<?php

class Localisation {
	
	private static $locale;
	private static $translations;
	private static $page;
	
	
	/*
	 * Définit la locale de l'utilisateur.
	 *
	 * Si cette locale n'est pas supportée par le jeu,
	 * l'anglais est utilisé par défaut.
	 */
	public static function setLocale($locale = NULL){
				
		if(isset($locale) && self::isValidLocale($locale)){
			self::$locale = $locale;
		}
		else {
			
			$locale = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
			$locale = strtolower(substr(trim($locale[0]), 0, 2));
	
			if(self::isValidLocale($locale)){
				self::$locale = $locale;
			}
			else {
				self::$locale = 'en';
			}
			
		}
		
	}
	
	
	
	/*
	 * Retourne la locale utilisée.
	 */
	public static function getLocale(){
		return self::$locale;
	}
	
	
	
	/*
	 * Définit la page courante pour récupérer 
	 * les bonnes traductions.
	 */
	public static function setPage($page){
		self::$page = $page;
	}
	

	
	/*
	 * Récupère le fichiers de traduction approprié
	 * et le converti en un tableau.
	 */
	public static function getTranslations(){
		
		if(!isset(self::$locale)){
			self::setLocale();
		}
		else {
			
			$file = LOCALISATIONS.self::$locale.'.json';
			
			$json = file_get_contents($file);
			self::$translations = json_decode($json, TRUE);
			//print_r(self::$translations);
		}
		
	}
	
	
	
	/*	
	 * Renvoie la traducton d'un mot.
	 */
	public static function localize($word){
		return self::$translations[self::$page][$word];
	}
	
	
	
	/*
	 * Vérifie si la locale donnée est 
	 * supportée sur le site.
	 */
	public static function isValidLocale($locale){

		global $_supportedLocalisations;

		if(array_key_exists($locale, $_supportedLocalisations)){
			return TRUE;
		}
		
		return FALSE;
	}
	
	
	
}

?>